#include "widget.h"
#include "widgetadaptor.h"
#include "accessible.h"

#include <QApplication>
#include <QDBusConnection>
#include <QDBusError>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QAccessible::installFactory(accessibleFactory);

    Widget w;
    w.show();

    //建立与DBus的session连接
    QDBusConnection connection = QDBusConnection::sessionBus();

    //MyepAdaptor是qdbusxml2cpp生成的Adaptor类
    /*说明：其实可以直接把Widget类注册为消息总线上的一个Object，但QT4不推荐。QT4推荐使用Adapter来注册Object。
           大多数情况下，可能只需要把自定义的类里的方法有选择的发布到消息总线上，使用Adapter可以很方便的实现选择性发布。*/
    MyepAdaptor myepAdaptor(&w);

    //注册名为com.deepin.dbus.myep的服务
    if (!connection.registerService("com.deepin.dbus.myep"))
    {
        qDebug() << "registerService error:" << connection.lastError().message();
        exit(-1);
    }
    //注册名为com/deepin/dbus/myep的对象
    connection.registerObject("/com/deepin/dbus/myep", &w);

    return a.exec();
}
